package com.manong.utils;

import com.manong.entity.Department;
import org.springframework.beans.BeanUtils;

import java.util.ArrayList;
import java.util.List;
import java.util.Optional;

/**
 * @author 李茂鑫
 * @Date 2025/1/8 11:58
 * @Descripition
 */
public class DepartmentTree {
    public static List<Department>makeDepartmentTree(List<Department>departmentList,Long pid){
        List<Department>list=new ArrayList<Department>();
        //创建集合保存部门信息
        Optional.ofNullable(departmentList).orElse(new ArrayList<Department>())
                //确保 departmentList 不为 null，如果是 null 则返回一个空的 ArrayList，避免 NullPointerException。
                .stream().filter(item ->item !=null && item.getPid()==pid)
                //过滤出所有 pid 等于传入的 pid 参数的部门。
                .forEach(item ->{
                    Department dept=new Department();
                    //创建部门对象
                    BeanUtils.copyProperties(item,dept);
                    //复制属性
                    List<Department>children=makeDepartmentTree(departmentList, item.getPid());
                    //获取每一个item的下级部门，递归生成部门树
                    dept.setChildren(children);
                    //设置下级部门
                    list.add(dept);
                    //将部门对象添加到集合中
                });
        return list;
    }
}
